from django.db import models
from tanxi.models.mysql.mysql_user_model import UserModel  # 假设你有一个用户模型

class AIProjectModel(models.Model):
    # 项目ID（自动递增主键）
    id = models.AutoField(primary_key=True, verbose_name='项目ID')
    
    # 项目名称
    name = models.CharField(max_length=200, verbose_name='项目名称')
    
    # 项目描述
    description = models.TextField(verbose_name='项目描述')
    
    # 项目类型
    PROJECT_TYPES = [
        ('nlp', '自然语言处理'),
        ('cv', '计算机视觉'),
        ('rl', '强化学习'),
        ('ml', '机器学习'),
        ('dl', '深度学习'),
        ('other', '其他'),
    ]
    type = models.CharField(
        max_length=50,
        choices=PROJECT_TYPES,
        verbose_name='项目类型'
    )
    
    # 作者信息
    author = models.CharField(max_length=100, verbose_name='作者')
    
    # 创建时间
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    
    # 更新时间
    updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
    
    # 演示URL
    demo_url = models.URLField(
        max_length=500,
        blank=True,
        null=True,
        verbose_name='演示链接'
    )
    
    # 封面图片
    cover_image = models.ImageField(
        upload_to='project_covers/',
        blank=True,
        null=True,
        verbose_name='封面图片'
    )
    
    # 源代码仓库URL
    repo_url = models.URLField(
        max_length=500,
        blank=True,
        null=True,
        verbose_name='代码仓库'
    )
    
    # 项目状态
    STATUS_CHOICES = [
        ('active', '活跃'),
        ('archived', '归档'),
        ('experimental', '实验性'),
        ('production', '生产环境'),
    ]
    status = models.CharField(
        max_length=20,
        choices=STATUS_CHOICES,
        default='active',
        verbose_name='项目状态'
    )
    
    # 关联用户（如果项目需要绑定到特定用户）
    user = models.ForeignKey(
        UserModel,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='ai_projects',
        verbose_name='关联用户'
    )
    
    # 技术栈（JSON格式存储）
    tech_stack = models.JSONField(
        default=list,
        verbose_name='技术栈'
    )
    
    # 是否公开
    is_public = models.BooleanField(
        default=True,
        verbose_name='是否公开'
    )
    
    # 元数据
    class Meta:
        db_table = 'ai_projects'  # 自定义表名
        verbose_name = 'AI项目'  # 单数形式
        verbose_name_plural = 'AI项目'  # 复数形式
        ordering = ['-created_at']  # 按创建时间倒序排列
    
    def __str__(self):
        return self.name